cc.Class({
    extends: cc.Component,

    properties: {
        dayStatusNodes: [cc.Node], // 7个节点，显示每一天的签到状态
        signInButton: cc.Node, // 签到按钮
        doubleRewardButton: cc.Node, // 看视频双倍奖励按钮
        closeButton: cc.Node, // 关闭界面按钮
    },

    onLoad() {
        // 初始化签到数据
        this.initSignInData();

        // 添加按钮事件监听
        this.addEventListeners();
    },

    // 初始化签到数据
    initSignInData() {
        let data = this.getSignInData();
        this.updateDayStatus(data.days); // 根据已签到天数更新状态
    },

    // 获取签到数据
    getSignInData() {
        let data = JSON.parse(cc.sys.localStorage.getItem('signInData')) || {
            days: 0, // 签到天数
            lastSignInDate: '', // 上次签到日期
        };

        // 检查是否是新的一天
        let currentDate = this.getCurrentDate();
        if (data.lastSignInDate !== currentDate) {
            const lastDate = new Date(data.lastSignInDate);
            const current = new Date(currentDate);

            // 如果中断签到，重置签到天数
            if (Math.floor((current - lastDate) / (1000 * 60 * 60 * 24)) > 1) {
                data.days = 0;
            }
        }

        return data;
    },

    // 获取当前日期
    getCurrentDate() {
        let date = new Date();
        return `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`;
    },

    // 保存签到数据
    saveSignInData(data) {
        cc.sys.localStorage.setItem('signInData', JSON.stringify(data));
    },

    // 更新7天状态节点的纹理
    updateDayStatus(days) {
        for (let i = 0; i < this.dayStatusNodes.length; i++) {
            let node = this.dayStatusNodes[i];
            // 根据是否签到，更新纹理
            if (i < days) {
                node.active = true
            } else {
                node.active = false
            }
        }
    },

    // 签到逻辑
    signIn() {
        let data = this.getSignInData();
        let currentDate = this.getCurrentDate();

        // 检查是否已经签到今天
        if (data.lastSignInDate === currentDate) {
            console.log('今天已经签到了！');
            return;
        }

        // 更新签到天数和日期
        data.days += 1;
        data.lastSignInDate = currentDate;

        // 保存签到数据
        this.saveSignInData(data);

        // 更新状态显示
        this.updateDayStatus(data.days);

        console.log(`签到成功！当前已签到第 ${data.days} 天`);
        this.showPrizeResult();
    },
    showPrizeResult(){
        console.log('发奖，todo')
    },

    // 双倍奖励逻辑
    watchVideoForDoubleReward() {
        this.signIn();
        this.giveDoubleReward();
    },

    giveDoubleReward() {
        console.log('获得双倍奖励！');
    },

    // 事件监听
    addEventListeners() {
        // 签到按钮点击事件
        this.signInButton.on('click', this.signIn, this);

        // 双倍奖励按钮点击事件
        this.doubleRewardButton.on('click', this.watchVideoForDoubleReward, this);

        // 关闭按钮点击事件
        this.closeButton.on('click', () => {
            this.node.active = false; // 关闭签到界面
        });
    }
});
